The present invention relates to the field of graphics and image processing as performed in a digital system. More specifically, the present invention is a band combine function for converting a source image of n bands to a destination image of m bands, especially when performed on a parallel processing system.
In a digital system, images are stored by pixels of the image. One pixel is represented by some number of bits or bytes of memory in the digital system. Furthermore, the image is typically represented by a two-dimensional array of pixels. The image may have multiple two-dimensional arrays of pixels. One array, or "band," represents a particular feature of the image. For example, an image may be a color image in RGB format. A first band of the image represents the red components. A second band represents the green components. And, a third band represents the blue components.
Band combine is used in image processing for many different purposes. For example, band combine may be used to convert an image from one color space to another, such as converting video images in YUV format to RGB format for display on a monitor. Conversely, band combine may also be used to convert an image from RGB format to YUV format. Furthermore, band combine may be used to extract the luminance information from a color image, which may be used to create a black-and-white image. Band combine may be used to highlight particular features of the image according to desired bias values. For example, specific features of a topographic image may be shown in a particular color.
The band combine function is performed by a matrix multiplication operation: D=A*S. S is a vector representing a source pixel. D is a vector representing a destination pixel. A is a transformation matrix, also containing bias values. Matrix A may contain user-defined values. Further, a user may select or define the bias values For example, to band combine a three-banded source image to obtain a three-banded destination image, the matrix representation would be: EQU [d0]=[a b c d]*[s0] EQU [d1]=[e f g h]*[s1] EQU [d2]=[i j k l]*[s2] [1]
The values in the transformation matrix may be floating point numbers. The variables d, h, and l are bias values. Using matrix multiplication, the resulting computations that are to be performed on each pixel of the image are: EQU d0=a*s0+b*s1+c*s2+d, EQU d1=e*s0+f*s1+g*s2+h, and EQU d2=i*s0+j*s1+k*s2+l.
Despite improvements in digital processing technology, mathematics operations such as multiply and add are still relatively time consuming. Hence, functions such as the band combine function, which are very computation intensive, require substantial amounts of computing resources and time. Further, as users demand more from the technology, these types of image processing operations will even become more complex. For example, the resolution of images is typically increasing, which leads to greater numbers of pixels per image. Accordingly, the band combine function will take proportionately longer to execute for higher resolution images. Therefore, it becomes increasingly important to improve the techniques used to generate the band combine function, so that the function may be performed more quickly and more efficiently.
As can be seen, an improved technique for generating the band combine function is needed.